home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / util / misc / Resistor.lha / resistor / src / resistor_temp.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-09-15  |  14.1 KB  |  446 lines

  1. /*************************************************************************/
  2. /*                                                                       */
  3. /*   Includes                                                            */
  4. /*                                                                       */
  5. /*************************************************************************/
  6.  
  7. #include "resistor_Includes.h"
  8. #include "resistor.h"
  9.  
  10. /*************************************************************************/
  11. /*                                                                       */
  12. /*   Functions                                                           */
  13. /*                                                                       */
  14. /*************************************************************************/
  15.  
  16. /// Werte-Matrix
  17.  
  18. char werte[13][7]=
  19.     {"black  ",
  20.      "brown  ",
  21.      "red    ",
  22.      "orange ",
  23.      "yellow ",
  24.      "green  ",
  25.      "blue   ",
  26.      "violet ",
  27.      "grey   ",
  28.      "white  ",
  29.      "silver ",
  30.      "gold   ",
  31.      "no ring"
  32.      };
  33.  
  34. int ringvalue[] = { 0,0,0 };
  35. int faktor=1; // Bereich
  36. ULONG bval=0; //Zwischenvariable
  37. ///
  38. /// viewvalue
  39. void viewval(struct Gadget *wingads[],struct Window *win)
  40. {
  41.  
  42.     ULONG cval=0;
  43.  
  44.     if (bval > 9999)
  45.         {
  46.         if (faktor == 3) goto ende;
  47.         faktor++;
  48.         bval = bval/1000;
  49.         viewval(wingads,win);
  50.         GT_SetGadgetAttrs(wingads[CYID_Bereich], win, NULL, GTCY_Active,(ULONG)faktor, TAG_DONE);
  51.         }
  52.  
  53. ende:
  54.     if (bval > 999999999) bval = 0;
  55.     cval=bval;
  56.     GT_SetGadgetAttrs(wingads[INID_Wert],win,NULL,GTIN_Number,cval,TAG_DONE);
  57.     GT_RefreshWindow(win,NULL);
  58. }
  59. ///
  60. /// calcvalue
  61. void calcvalue(struct Gadget *wingads[],struct Window *win,int ringnr)
  62. {
  63.     float rfak=1, cfak=1;
  64.     int  compval=ringvalue[2];
  65.     ULONG cval=0;
  66.  
  67.     if (ringnr == 3)
  68.         {
  69.             if (ringvalue[2] == 10)
  70.                {
  71.                 compval = 1;
  72.                 GT_SetGadgetAttrs(wingads[CYID_Bereich], win, NULL, GTCY_Active,(ULONG)0, TAG_DONE);
  73.                }
  74.             if (ringvalue[2] == 11)
  75.                {
  76.                 compval = 2;
  77.                 GT_SetGadgetAttrs(wingads[CYID_Bereich], win, NULL, GTCY_Active,(ULONG)0, TAG_DONE);
  78.                }
  79.         }
  80.  
  81.     switch (compval)
  82.       {
  83.         case 0:
  84.             cfak = 1;
  85.             break;
  86.         case 1:
  87.             cfak = 10;
  88.             break;
  89.         case 2:
  90.             cfak = 100;
  91.             break;
  92.         case 3:
  93.             cfak = 1000;
  94.             break;
  95.         case 4:
  96.             cfak = 10000;
  97.             break;
  98.         case 5:
  99.             cfak = 100000;
  100.             break;
  101.         case 6:
  102.             cfak = 1000000;
  103.             break;
  104.         case 7:
  105.             cfak = 10000000;
  106.             break;
  107.         case 8:
  108.             cfak = 100000000;
  109.             break;
  110.         case 9:
  111.             cfak = 1000000000;
  112.             break;
  113.         default:
  114.             break;
  115.       }
  116.  
  117.     switch(faktor)
  118.       {
  119.         case 0:
  120.             rfak = 1000;
  121.             break;
  122.         case 1:
  123.             rfak = 1;
  124.             break;
  125.         case 2:
  126.             rfak = 1000;
  127.             break;
  128.         case 3:
  129.             rfak = 1000000;
  130.             break;
  131.       }
  132.     if (faktor == 0)
  133.     bval = (ULONG)((((10*ringvalue[0])+(ringvalue[1]))*cfak));
  134.     else
  135.     bval = (ULONG)((((10*ringvalue[0])+(ringvalue[1]))*cfak))/rfak;
  136.     viewval(wingads,win);
  137. }
  138. ///
  139. ///calccolor
  140. void calccolor(int value,struct Gadget *wingads[],struct Window *win)
  141. {
  142.         int first, second, third, i=0;
  143.         int milli[]={10,11,0,1,2,3,4,5,6,7};
  144.  
  145.         if (faktor == 0)
  146.             {
  147.              if (value<100)
  148.               {
  149.                GT_SetGadgetAttrs(wingads[TXID_1Ring],win,NULL,GTTX_Text,(ULONG)("Input  "),TAG_DONE);
  150.                GT_SetGadgetAttrs(wingads[TXID_2Ring],win,NULL,GTTX_Text,(ULONG)("atleast"),TAG_DONE);
  151.                GT_SetGadgetAttrs(wingads[TXID_3Ring],win,NULL,GTTX_Text,(ULONG)("3digits"),TAG_DONE);
  152.                goto ende;
  153.               }
  154.             }
  155.         else
  156.             {
  157.              if (value<10)
  158.                  {
  159.                   GT_SetGadgetAttrs(wingads[TXID_1Ring],win,NULL,GTTX_Text,(ULONG)("Input  "),TAG_DONE);
  160.                   GT_SetGadgetAttrs(wingads[TXID_2Ring],win,NULL,GTTX_Text,(ULONG)("atleast"),TAG_DONE);
  161.                   GT_SetGadgetAttrs(wingads[TXID_3Ring],win,NULL,GTTX_Text,(ULONG)("2digits"),TAG_DONE);
  162.                   goto ende;
  163.                  }
  164.              }
  165.  
  166.         while(value>=100)
  167.          {
  168.             value = value/10;
  169.             i++;
  170.          }
  171.  
  172.     first = value/10;
  173.     second = value%10;
  174.     if (faktor>0)
  175.     third = i+((faktor-1)*3);
  176.     else
  177.     third = i;
  178.  
  179.  
  180.     ringvalue[0] = first;
  181.     ringvalue[1] = second;
  182.     ringvalue[2] = third;
  183.     //printf("%d\n",first);    //nur zum Test
  184.     //printf("%d\n",second);
  185.     //printf("%d\n",third);
  186.  
  187.     GT_SetGadgetAttrs(wingads[TXID_1Ring],win,NULL,GTTX_Text,(ULONG)(werte[first]),TAG_DONE);
  188.     GT_SetGadgetAttrs(wingads[TXID_2Ring],win,NULL,GTTX_Text,(ULONG)(werte[second]),TAG_DONE);
  189.     switch (faktor)
  190.       {
  191.        case 0:
  192.         if (third>0) GT_SetGadgetAttrs(wingads[TXID_3Ring],win,NULL,GTTX_Text,(ULONG)(werte[milli[third-1]]),TAG_DONE);
  193.         break;
  194.        case 1:
  195.        case 2:
  196.        case 3:
  197.         if (third>9)
  198.             {
  199.               GT_SetGadgetAttrs(wingads[TXID_3Ring],win,NULL,GTTX_Text,(ULONG)("to big!"),TAG_DONE);
  200.               break;
  201.             }
  202.         else
  203.             {
  204.             GT_SetGadgetAttrs(wingads[TXID_3Ring],win,NULL,GTTX_Text,(ULONG)(werte[third]),TAG_DONE);
  205.             break;
  206.             }
  207.       }
  208. ende:
  209.     GT_RefreshWindow(win,NULL); 
  210. }
  211. ///
  212. ///Fehlemeldung
  213. void fehler(struct Window *win,struct Gadget *wingads[])
  214. {
  215.   GT_SetGadgetAttrs(wingads[TXID_1Ring],win,NULL,GTTX_Text,(ULONG)("Value  "),TAG_DONE);
  216.   GT_SetGadgetAttrs(wingads[TXID_2Ring],win,NULL,GTTX_Text,(ULONG)("is     "),TAG_DONE);
  217.   GT_SetGadgetAttrs(wingads[TXID_3Ring],win,NULL,GTTX_Text,(ULONG)("to big!"),TAG_DONE);
  218.   GT_SetGadgetAttrs(wingads[INID_Wert],win,NULL,GTIN_Number,(UWORD)0,TAG_DONE);
  219.   GT_RefreshWindow(win,NULL);
  220. }
  221. ///
  222. /// Function for Writing Ringlabels
  223. void WritetoRingsA(char *color,struct Gadget *wingads[],struct Window *win,int ringnr)
  224. {
  225.  
  226.     switch (ringnr)
  227.         {
  228.             case 1:
  229.                 GT_SetGadgetAttrs(wingads[TXID_1Ring],win,NULL,GTTX_Text,(ULONG)color,TAG_DONE);
  230.                 GT_RefreshWindow(win,NULL);
  231.                 break;
  232.             case 2:
  233.                 GT_SetGadgetAttrs(wingads[TXID_2Ring],win,NULL,GTTX_Text,(ULONG)color,TAG_DONE);
  234.                 GT_RefreshWindow(win,NULL);
  235.                 break;
  236.             case 3:
  237.                 GT_SetGadgetAttrs(wingads[TXID_3Ring],win,NULL,GTTX_Text,(ULONG)color,TAG_DONE);
  238.                 GT_RefreshWindow(win,NULL);
  239.                 break;
  240.             default:
  241.                 break;
  242.         }
  243. }
  244.  
  245. void WritetoRingsB(char *color,struct Gadget *wingads[],struct Window *win,int ringnr)
  246. {
  247.     GT_SetGadgetAttrs(wingads[TXID_4Ring],win,NULL,GTTX_Text,(ULONG)color,TAG_DONE);
  248.     GT_RefreshWindow(win,NULL);
  249.  
  250. }
  251. ///
  252. ///Window
  253. /* Functions for Window */
  254. int UserSetupWindow(struct Window *win,struct Gadget *wingads[],int ringnr)
  255. {
  256.     return ringnr;
  257. }
  258. int INWertClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  259. {
  260.     int value=0;
  261.     GT_GetGadgetAttrs(wingads[INID_Wert], win, NULL, GTIN_Number,(ULONG)&value, TAG_DONE);
  262.     calccolor(value,wingads,win);
  263.     calcvalue(wingads,win,ringnr);
  264.     return ringnr;
  265. }
  266. int CYBereichClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  267. {
  268.     int cycnr=0;
  269.     GT_GetGadgetAttrs(wingads[CYID_Bereich], win, NULL, GTCY_Active,(ULONG)&cycnr, TAG_DONE);
  270.     faktor = cycnr;
  271.     calcvalue(wingads,win,ringnr);
  272.     return ringnr;
  273. }
  274. int CYToleranzClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  275. {
  276.     ULONG cycnr = 0;
  277.     int colnr[]= {12,10,11,1,2,5,6,7};
  278.     GT_GetGadgetAttrs(wingads[CYID_Toleranz], win, NULL, GTCY_Active,(ULONG)&cycnr, TAG_DONE);
  279.     WritetoRingsB(werte[colnr[cycnr]],wingads,win,ringnr);
  280.     return ringnr;
  281. }
  282. int BTschwarz_wClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  283. {
  284.     if (ringnr == 1) {ringnr--; goto ende;}
  285.     ringvalue[ringnr-1] = 0;
  286.     WritetoRingsA(werte[0],wingads,win,ringnr);
  287.     calcvalue(wingads,win,ringnr);
  288. ende:
  289.     return ringnr;
  290. }
  291. int BTbraun_wClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  292. {
  293.     ringvalue[ringnr-1] = 1;
  294.     WritetoRingsA(werte[1],wingads,win,ringnr);
  295.     calcvalue(wingads,win,ringnr);
  296.     return ringnr;
  297. }
  298. int BTrot_wClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  299. {
  300.     ringvalue[ringnr-1] = 2;
  301.     WritetoRingsA(werte[2],wingads,win,ringnr);
  302.     calcvalue(wingads,win,ringnr);
  303.     return ringnr;
  304. }
  305. int BTorange_wClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  306. {
  307.     ringvalue[ringnr-1] = 3;
  308.     WritetoRingsA(werte[3],wingads,win,ringnr);
  309.     calcvalue(wingads,win,ringnr);
  310.     return ringnr;
  311. }
  312. int BTgelb_wClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  313. {
  314.     ringvalue[ringnr-1] = 4;
  315.     WritetoRingsA(werte[4],wingads,win,ringnr);
  316.     calcvalue(wingads,win,ringnr);
  317.     return ringnr;
  318. }
  319. int BTgruen_wClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  320. {
  321.     ringvalue[ringnr-1] = 5;
  322.     WritetoRingsA(werte[5],wingads,win,ringnr);
  323.     calcvalue(wingads,win,ringnr);
  324.     return ringnr;
  325. }
  326. int BTblau_wClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  327. {
  328.     ringvalue[ringnr-1] = 6;
  329.     WritetoRingsA(werte[6],wingads,win,ringnr);
  330.     calcvalue(wingads,win,ringnr);
  331.     return ringnr;
  332. }
  333. int BTviolett_wClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  334. {
  335.     ringvalue[ringnr-1] = 7;
  336.     WritetoRingsA(werte[7],wingads,win,ringnr);
  337.     calcvalue(wingads,win,ringnr);
  338.     return ringnr;
  339. }
  340. int BTgrau_wClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  341. {
  342.     if (ringnr == 3) {fehler(win,wingads); goto ende;}
  343.     ringvalue[ringnr-1] = 8;
  344.     WritetoRingsA(werte[8],wingads,win,ringnr);
  345.     calcvalue(wingads,win,ringnr);
  346. ende:
  347.     return ringnr;
  348. }
  349. int BTweiss_wClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  350. {
  351.     if (ringnr == 3) {fehler(win,wingads); goto ende;}
  352.     ringvalue[ringnr-1] = 9;
  353.     WritetoRingsA(werte[9],wingads,win,ringnr);
  354.     calcvalue(wingads,win,ringnr);
  355. ende:
  356.     return ringnr;
  357. }
  358. int BTsilber_wClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  359. {
  360.     if (ringnr == 3)
  361.      {
  362.         ringvalue[ringnr-1] = 10;
  363.         WritetoRingsA(werte[10],wingads,win,ringnr);
  364.         calcvalue(wingads,win,ringnr);
  365.      }
  366.     else ringnr--;
  367.     return ringnr;
  368. }
  369. int BTgold_wClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  370. {
  371.     if (ringnr == 3)
  372.      {
  373.         ringvalue[ringnr-1] = 11;
  374.         WritetoRingsA(werte[11],wingads,win,ringnr);
  375.         calcvalue(wingads,win,ringnr);
  376.      }
  377.     else ringnr--;
  378.     return ringnr;
  379. }
  380. int BTsilber_tClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  381. {
  382.     GT_SetGadgetAttrs(wingads[CYID_Toleranz],win,NULL,GTCY_Active,(UWORD)1,TAG_DONE);
  383.     WritetoRingsB(werte[10],wingads,win,ringnr);
  384.     return ringnr;
  385. }
  386. int BTgold_tClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  387. {
  388.     GT_SetGadgetAttrs(wingads[CYID_Toleranz],win,NULL,GTCY_Active,(UWORD)2,TAG_DONE);
  389.     WritetoRingsB(werte[11],wingads,win,ringnr);
  390.     return ringnr;
  391. }
  392. int BTbraun_tClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  393. {
  394.     GT_SetGadgetAttrs(wingads[CYID_Toleranz],win,NULL,GTCY_Active,(UWORD)3,TAG_DONE);
  395.     WritetoRingsB(werte[1],wingads,win,ringnr);
  396.     return ringnr;
  397. }
  398. int BTrot_tClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  399. {
  400.     GT_SetGadgetAttrs(wingads[CYID_Toleranz],win,NULL,GTCY_Active,(UWORD)4,TAG_DONE);
  401.     WritetoRingsB(werte[2],wingads,win,ringnr);
  402.     return ringnr;
  403. }
  404. int BTgruen_tClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  405. {
  406.     GT_SetGadgetAttrs(wingads[CYID_Toleranz],win,NULL,GTCY_Active,(UWORD)5,TAG_DONE);
  407.     WritetoRingsB(werte[5],wingads,win,ringnr);
  408.     return ringnr;
  409. }
  410. int BTblau_tClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  411. {
  412.     GT_SetGadgetAttrs(wingads[CYID_Toleranz],win,NULL,GTCY_Active,(UWORD)6,TAG_DONE);
  413.     WritetoRingsB(werte[6],wingads,win,ringnr);
  414.     return ringnr;
  415. }
  416. int BTviolett_tClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  417. {
  418.     GT_SetGadgetAttrs(wingads[CYID_Toleranz],win,NULL,GTCY_Active,(UWORD)7,TAG_DONE);
  419.     WritetoRingsB(werte[7],wingads,win,ringnr);
  420.     return ringnr;
  421. }
  422. int BTneuClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  423. {
  424.     ringnr = 0;
  425.     GT_SetGadgetAttrs(wingads[TXID_1Ring],win,NULL,GTTX_Text,(ULONG)("1.ring"),TAG_DONE);
  426.     GT_SetGadgetAttrs(wingads[TXID_2Ring],win,NULL,GTTX_Text,(ULONG)("2.ring"),TAG_DONE);
  427.     GT_SetGadgetAttrs(wingads[TXID_3Ring],win,NULL,GTTX_Text,(ULONG)("3.ring"),TAG_DONE);
  428.     GT_SetGadgetAttrs(wingads[TXID_4Ring],win,NULL,GTTX_Text,(ULONG)("no ring"),TAG_DONE);
  429.     GT_SetGadgetAttrs(wingads[CYID_Bereich],win,NULL,GTCY_Active,(UWORD)1,TAG_DONE);
  430.     GT_SetGadgetAttrs(wingads[CYID_Toleranz],win,NULL,GTCY_Active,(UWORD)0,TAG_DONE);
  431.     GT_SetGadgetAttrs(wingads[INID_Wert],win,NULL,GTIN_Number,(UWORD)0,TAG_DONE);
  432.     ringvalue[0] = 0;
  433.     ringvalue[1] = 0;
  434.     ringvalue[2] = 0;
  435.     faktor=1;
  436.     GT_RefreshWindow(win,NULL);
  437.     return ringnr;
  438. }
  439. int BTQuitClicked(struct Window *win,struct Gadget *wingads[],ULONG gadgetid,ULONG messagecode,int ringnr)
  440. {
  441.     Signal(FindTask(NULL), SIGBREAKF_CTRL_C);
  442.     return ringnr;
  443. }
  444.  
  445. ///
  446.